const path = require('path');
//y引用热更新的第二步
const webpack = require('webpack');
//这个配置文件，其实就是一个JS文件，通过Node中的模块操作，向外暴露了一个配置对象
const VueLoaderPlugin = require('vue-loader/lib/plugin');
var htmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: path.join(__dirname,'./src/main.js'),//入口，表示要使用webpack打包哪个文件
    output: {
        path: path.join(__dirname,'./dist'),//指定打包好的文件输出到哪个目录中去
        filename: 'bundle.js',//这是指定输出文件的名称
    },
    devServer: {
        open: true,//自动打开浏览器
        port: 3000,//设置启动时候的运行端口
        hot: true,//引入热更新的第一步
    },
    plugins: [//配置插件的节点
        new webpack.HotModuleReplacementPlugin(),//new一个热更新的模块对象，这是启用热更新的第三步
        new htmlWebpackPlugin({//创建一个在内存中生成HTML页面的插件
            template:path.join(__dirname,'./src/index.html'),//指定模板页面，将来会根据指定的页面路径，去生成内存中的页面
            filename:'index.html'//指定生成页面的名称
        }),
        new VueLoaderPlugin()
    ],
    module: {//这个节点，用于配置所有第三方模块加载器
        rules: [//所有第三方模块的匹配规则
            {test: /\.css$/,use:['style-loader','css-loader']},//匹配处理.css文件的第三方loader规则
            {test: /\.less$/,use:['style-loader','css-loader','less-loader']},//配置处理.less文件的第三方loader规则
            {test: /\.scss$/,use:['style-loader','css-loader','sass-loader']},//配置处理.scss文件的第三方loader规则
            {test: /\.(jpg|png|gif|bmp|jpeg)$/,use:'url-loader?limit=81764&name=[hash:8]-[name].[ext]'},//处理图片路径的loader
            {test: /\.(ttf|eot|svg|woff|woff2)$/,use:'url-loader'},//处理字体文件的loader
            {test: /\.js$/, use: 'babel-loader', exclude:/node_modules/},//这是配置Babel来转换高级的ES语法
            {test: /\.vue$/, use: 'vue-loader'},//处理.vue文件的loader
        ]

    },
    resolve: {
        alias: {//修改vue被导入时候的包的路径
            // "vue$": "vue/dist/vue.js"
        }
    }
}